package com.nan.leetcode;

import java.util.ArrayList;
import java.util.List;

public class Test {
    //存在三个连续奇数的数组
    public boolean threeConsecutiveOdds(int[] arr){
        if(arr==null||arr.length<3){
            return false;
        }
        //遍历数组，找到所有可能存在的序列，并判断
        for(int i=0;i< arr.length-2;i++){
            if(arr[i]%2!=0 && arr[i+1]%2!=0 && arr[i+2]%2!=0){
                return true;
            }
        }
        return false;
    }
    public boolean threeConsecutiveOdds(List<Integer> arr){
        for(int i=0;i<arr.size()-2;i++){
            if(arr.get(i)%2!=0 && arr.get(i+1)%2!=0 && arr.get(i+2)%2!=0){
                return true;
            }
        }
        return false;
    }
    //杨辉三角
    public List<List<Integer>> generate(int numRows){
        if(numRows<=0){
            //直接返回一个空的List
            return new ArrayList<>();
        }
        //result用来表示最终结果，这个result中就包含包含了若干行
        List<List<Integer>> result=new ArrayList<>();
        //处理第一行，就是固定一个1
        List<Integer> firstLine=new ArrayList<>();
        firstLine.add(1);
        result.add(firstLine);
        if(numRows==1){
            //参数为1的时候，返回结果：
            //[
            //  [1]
            //]
            return result;
        }
        //处理第2行，就是固定的两个1
        List<Integer> secondLine=new ArrayList<>();
        secondLine.add(1);
        secondLine.add(1);//给第二行加入两个1
        result.add(secondLine);//再把结果加入结果中
        if(numRows==2){
            return result;
        }
        //处理后续第i行情况，每一行的第一个和最后一个元素都是1，每一行的列数和行数相同
        //i，j-》i-1，j-1+i-1，j
        for(int row=3;row<=numRows;row++){
            //当前是row，上一行就是row-1，但是要注意，此处的row
            // 是从1开始计的，而get要从0下标开始计算，所以还要再-1；先行数，再转下标
            List<Integer> prevLine= result.get(row-1-1);
            List<Integer> currentLine=new ArrayList<>();
            currentLine.add(1);//第一列
            //处理中间列
            for(int col=2;col<=row-1;col++){
                //这个循环中需要使用上一行的数据
                int num1=prevLine.get(col-1);//获取上一行的j列的数据
                int num2=prevLine.get(col-1-1);//获取到上一行的j-1
                currentLine.add(num1+num2);
            }
            currentLine.add(1);//最后一列
            result.add(currentLine);//把当前行放到最终结果中
        }
        return result;
    }
}
